home *** CD-ROM | disk | FTP | other *** search
/ Gold Medal Software 3 / Gold Medal Software - Volume 3 (Gold Medal) (1994).iso / graphics / svgapv20.arj / SVGAMOD1.BAS < prev    next >
BASIC Source File  |  1994-03-11  |  30KB  |  1,025 lines

  1. '****************************************************************************
  2. '*
  3. '*      'SVGAQB' & 'SVGAPV' A Super VGA Graphics Librarys for use with
  4. '*      MS QuickBASIC 4.X and MS PDS/VBDOS
  5. '*      Copyright 1993-1994 by Stephen L. Balkum and Daniel A. Sill
  6. '*
  7. '*      MS, QuickBASIC, PDS, and VBDOS are registered trademarks of
  8. '*      Microsoft Corporation. GIF and 'Graphics Interchange Format' are
  9. '*      trademarks (TM) ofCompuServe, Incorporated, an H&R Block Company.
  10. '*
  11. '*    **************** UNREGISTERED SHAREWARE VERSION **********************
  12. '*    * FOR EVALUATION ONLY. NOT FOR RESALE IN ANY FORM. SOFTWARE WRITTEN  *
  13. '*    * USING THIS UNREGISTERED SHAREWARE GRAPHICS LIBRARY MAY NOT BY SOLD *
  14. '*    * OR USED FOR ANY PURPOSE OTHER THAN THE EVALUATION OF THIS LIBRARY. *
  15. '*    **********************************************************************
  16. '*
  17. '*    **************** NO WARRANTIES AND NO LIABILITY **********************
  18. '*    * Stephen L. Balkum and Daniel A. Sill provide no warranties, either *
  19. '*    * expressed or implied, of merchant ability, or fitness, for a       *
  20. '*    * particular use or purpose of this SOFTWARE and documentation.      *
  21. '*    * In no event shall Stephen L. Balkum or Daniel A. Sill be held      *
  22. '*    * liable for any damages resulting from the use or misuse of the     *
  23. '*    * SOFTWARE and documentation.                                        *
  24. '*    **********************************************************************
  25. '*
  26. '*    ************** U.S. GOVERNMENT RESTRICTED RIGHTS *********************
  27. '*    * Use, duplication, or disclosure of the SOFTWARE and documentation  *
  28. '*    * by the U.S. Government is subject to the restrictions as set forth *
  29. '*    * in subparagraph (c)(1)(ii) of the Rights in Technical Data and     *
  30. '*    * Computer Software clause at DFARS 252.227-7013.                    *
  31. '*    * Contractor/manufacturer is Stephen L. Balkum and Daniel A. Sill,   *
  32. '*    * P.O. Box 7704, Austin, Texas 78713-7704                            *
  33. '*    **********************************************************************
  34. '*
  35. '*    **********************************************************************
  36. '*    * By using this SOFTWARE or documentation, you agree to the above    *
  37. '*    * terms and conditions.                                              *
  38. '*    **********************************************************************
  39. '*
  40. '****************************************************************************
  41.  
  42.  
  43.     REM $INCLUDE: 'SVGABC.BI'
  44.     REM $INCLUDE: 'SVGADEMO.BI'
  45.  
  46. REM $DYNAMIC
  47.     SUB DOBLOCK (RET$)
  48.  
  49.     MYPI! = ATN(1) * 4
  50.  
  51.     '*************************************************************************
  52.     '* SET UP THE TITLE
  53.     '*************************************************************************
  54.     TITLE$ = "DEMO 5: Block functions and Sprites"
  55.     PALSET Pal, 0, 255
  56.  
  57.     '*************************************************************************
  58.     '* SHOW BLOCK GET (DRAW SOME CIRCLES AND "GET A CHUNK OF THEM")
  59.     '*************************************************************************
  60.     FILLSCREEN (0)
  61.     SETVIEW 0, 0, GETMAXX, GETMAXY
  62.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  63.     A$ = "BLKGET (X1,Y1,X2,Y2,GfxBlock)"
  64.     DRWSTRING 1, 7, 0, A$, 10, 16
  65.     Colr = 16
  66.     FOR I = 0 TO GETMAXX \ 2
  67.         DRWCIRCLE 1, Colr, GETMAXX \ 4 + I, GETMAXY \ 2, GETMAXY \ 5
  68.         Colr = Colr + 4
  69.         IF Colr > 255 THEN
  70.             Colr = 16
  71.         END IF
  72.     NEXT I
  73.     XINC = GETMAXX \ 20
  74.     YINC = GETMAXY \ 20
  75.     X1 = GETMAXX \ 2 - XINC
  76.     Y1 = GETMAXY \ 2 - YINC
  77.     X2 = GETMAXX \ 2 + XINC
  78.     Y2 = GETMAXY \ 2 + YINC
  79.     DRWBOX 1, 0, X1, Y1, X2, Y2
  80.     BLKGET X1, Y1, X2, Y2, GFXBLK1(0)
  81.     GETKEY RET$
  82.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  83.         FILLSCREEN (0)
  84.         EXIT SUB
  85.     END IF
  86.  
  87.     '*************************************************************************
  88.     '* SHOW BLOCK ROTATE AND SPRITE STUFF
  89.     '*************************************************************************
  90.     X = (X2 - X1) \ 2 + X1
  91.     Y = (Y2 - Y1) \ 2 + Y1
  92.     A$ = "BLKROTATE (Angle,BackFill,SourceGfxBlock,DestGfxBlock)   "
  93.     DRWSTRING 1, 7, 0, A$, 10, 16
  94.     A$ = "SPRITEGAP(TranSColr,X,Y,SpriteArray,BackGroundGfxBlock)"
  95.     DRWSTRING 1, 7, 0, A$, 10, 32
  96.     A$ = "SPRITEPUT(Mode%,TranSColr,X,Y,SpriteArray)"
  97.     DRWSTRING 1, 7, 0, A$, 10, 48
  98.     FILLAREA X1 + 2, Y1 + 2, 0, 0
  99.     BLKGET X1, Y1, X2, Y2, GFXBLK3(0)
  100.     SETVIEW 0, 64, GETMAXX, GETMAXY
  101.     FOR I = 0 TO 360 STEP 3
  102.         DUMMY = BLKROTATE(I, 1, GFXBLK1(0), GFXBLK2(0))
  103.         SPRITEPUT 1, 1, X - GFXBLK3(0) \ 2, Y - GFXBLK3(1) \ 2, GFXBLK3(0)
  104.         SPRITEGAP 1, X - GFXBLK2(0) \ 2, Y - GFXBLK2(1) \ 2, GFXBLK2(0), GFXBLK3(0)
  105.         SDELAY 4
  106.     NEXT I
  107.     SPRITEPUT 1, 1, X - GFXBLK3(0) \ 2, Y - GFXBLK3(1) \ 2, GFXBLK3(0)
  108.     BLKPUT 1, X1, Y1, GFXBLK1(0)
  109.     GETKEY RET$
  110.     SETVIEW 0, 0, GETMAXX, GETMAXY
  111.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  112.         FILLSCREEN (0)
  113.         EXIT SUB
  114.     END IF
  115.  
  116.     '*************************************************************************
  117.     '* SHOW BLOCK RESIZE AND SPRITE STUFF
  118.     '*************************************************************************
  119.     A$ = "BLKRESIZE (NewWidth,NewHeight,SourceGfxBlock,DestGfxBlock)   "
  120.     DRWSTRING 1, 7, 0, A$, 10, 16
  121.     A$ = "SPRITEGAP(TranSColr,X,Y,SpriteArray,BackGroundGfxBlock)"
  122.     DRWSTRING 1, 7, 0, A$, 10, 32
  123.     A$ = "SPRITEPUT(Mode%,TranSColr,X,Y,SpriteArray)"
  124.     DRWSTRING 1, 7, 0, A$, 10, 48
  125.     SETVIEW 0, 64, GETMAXX, GETMAXY
  126.     FILLAREA X1 + 2, Y1 + 2, 0, 0
  127.     BLKGET X1, Y1, X2, Y2, GFXBLK3(0)
  128.     FOR I = 0 TO XINC
  129.         BLKRESIZE GFXBLK1(0) - I, GFXBLK1(1) - I, GFXBLK1(0), GFXBLK2(0)
  130.         SPRITEPUT 1, 1, X - GFXBLK3(0) \ 2, Y - GFXBLK3(1) \ 2, GFXBLK3(0)
  131.         SPRITEGAP 1, X - GFXBLK2(0) \ 2, Y - GFXBLK2(1) \ 2, GFXBLK2(0), GFXBLK3(0)
  132.         SDELAY 5
  133.     NEXT I
  134.     SPRITEPUT 1, 1, X - GFXBLK3(0) \ 2, Y - GFXBLK3(1) \ 2, GFXBLK3(0)
  135.     FOR I = XINC TO 0 STEP -1
  136.         BLKRESIZE GFXBLK1(0) - I, GFXBLK1(1) - I, GFXBLK1(0), GFXBLK2(0)
  137.         SPRITEPUT 1, 1, X - GFXBLK3(0) \ 2, Y - GFXBLK3(1) \ 2, GFXBLK3(0)
  138.         SPRITEGAP 1, X - GFXBLK2(0) \ 2, Y - GFXBLK2(1) \ 2, GFXBLK2(0), GFXBLK3(0)
  139.         SDELAY 5
  140.     NEXT I
  141.     SPRITEPUT 1, 1, X - GFXBLK1(0) \ 2, Y - GFXBLK1(1) \ 2, GFXBLK1(0)
  142.     BLKGET X1, Y1, X2, Y2, GFXBLK3(0)
  143.     FOR I = 0 TO -XINC STEP -1
  144.         BLKRESIZE GFXBLK1(0) - I, GFXBLK1(1) - I, GFXBLK1(0), GFXBLK2(0)
  145.         SPRITEPUT 1, 1, X - GFXBLK3(0) \ 2, Y - GFXBLK3(1) \ 2, GFXBLK3(0)
  146.         SPRITEGAP 1, X - GFXBLK2(0) \ 2, Y - GFXBLK2(1) \ 2, GFXBLK2(0), GFXBLK3(0)
  147.         SDELAY 5
  148.     NEXT I
  149.     SPRITEPUT 1, 1, X - GFXBLK3(0) \ 2, Y - GFXBLK3(1) \ 2, GFXBLK3(0)
  150.     FOR I = -XINC TO 0
  151.         BLKRESIZE GFXBLK1(0) - I, GFXBLK1(1) - I, GFXBLK1(0), GFXBLK2(0)
  152.         SPRITEPUT 1, 1, X - GFXBLK3(0) \ 2, Y - GFXBLK3(1) \ 2, GFXBLK3(0)
  153.         SPRITEGAP 1, X - GFXBLK2(0) \ 2, Y - GFXBLK2(1) \ 2, GFXBLK2(0), GFXBLK3(0)
  154.         SDELAY 5
  155.     NEXT I
  156.     BLKPUT 1, X1, Y1, GFXBLK1(0)
  157.     GETKEY RET$
  158.     SETVIEW 0, 0, GETMAXX, GETMAXY
  159.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  160.         FILLSCREEN (0)
  161.         EXIT SUB
  162.     END IF
  163.  
  164.     '*************************************************************************
  165.     '* SHOW BLOCK PUT (PUT THE "CHUNKS" RANDOMLY AROUND THE SCREEN)
  166.     '*************************************************************************
  167.     SETVIEW 0, 31, GETMAXX, 64
  168.     FILLVIEW 0
  169.     A$ = "BLKPUT (Mode,X,Y,GfxBlock)   "
  170.     DRWSTRING 1, 7, 0, A$, 10, 16
  171.     XINC = GETMAXX \ 10
  172.     YINC = GETMAXY \ 10
  173.     SETVIEW 0, 32, GETMAXX, GETMAXY
  174.     FOR I = 0 TO GETMAXX \ 2
  175.         X = (GETMAXX + XINC) * RND - XINC
  176.         Y = (GETMAXY + YINC) * RND - YINC
  177.         BLKPUT 1, X, Y, GFXBLK1(0)
  178.     NEXT I
  179.     GETKEY RET$
  180.     SETVIEW 0, 0, GETMAXX, GETMAXY
  181.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  182.         FILLSCREEN (0)
  183.         EXIT SUB
  184.     END IF
  185.  
  186.     END SUB
  187.  
  188.     SUB DOCLIP (RET$)
  189.  
  190.     '*************************************************************************
  191.     '* SET UP AND SHOW THE TITLE
  192.     '*************************************************************************
  193.     TITLE$ = "DEMO 2: Clipping capability"
  194.     PALSET PAL2, 0, 255
  195.  
  196.     '*************************************************************************
  197.     '* SET UP THE WINDOWS
  198.     '*************************************************************************
  199.     FILLSCREEN (0)
  200.     SETVIEW 0, 0, GETMAXX, GETMAXY
  201.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  202.     A$ = "All primitives automatically clip"
  203.     DRWSTRING 1, 7, 0, A$, 10, 16
  204.  
  205.     WDTH = (GETMAXX + 1) / 2.25
  206.     SPCINGX = ((GETMAXX + 1) - WDTH * 2) / 3
  207.     HGTH = (GETMAXY + 1 - 35) / 2.25
  208.     SPCINGY = ((GETMAXY + 1 - 35) - HGTH * 2) / 3
  209.     XINC = WDTH * 1.5
  210.     YINC = HGTH * 1.5
  211.     XSUB = WDTH * .25
  212.     YSUB = HGTH * .25
  213.  
  214.  
  215.     B1X1 = SPCINGX
  216.     B1X2 = B1X1 + WDTH
  217.     B1Y1 = SPCINGY + 35
  218.     B1Y2 = B1Y1 + HGTH
  219.  
  220.     B2X2 = GETMAXX - SPCINGX
  221.     B2X1 = B2X2 - WDTH
  222.     B2Y1 = SPCINGY + 35
  223.     B2Y2 = B2Y1 + HGTH
  224.  
  225.     B3X2 = GETMAXX - SPCINGX
  226.     B3X1 = B3X2 - WDTH
  227.     B3Y2 = GETMAXY - SPCINGY
  228.     B3Y1 = B3Y2 - HGTH
  229.  
  230.     B4X1 = SPCINGX
  231.     B4X2 = B4X1 + WDTH
  232.     B4Y2 = GETMAXY - SPCINGY
  233.     B4Y1 = B4Y2 - HGTH
  234.  
  235.     DRWBOX 1, 15, B1X1, B1Y1, B1X2, B1Y2
  236.     DRWBOX 1, 15, B2X1, B2Y1, B2X2, B2Y2
  237.     DRWBOX 1, 15, B3X1, B3Y1, B3X2, B3Y2
  238.     DRWBOX 1, 15, B4X1, B4Y1, B4X2, B4Y2
  239.  
  240.     B1X1 = B1X1 + 1
  241.     B1Y1 = B1Y1 + 1
  242.     B1X2 = B1X2 - 1
  243.     B1Y2 = B1Y2 - 1
  244.  
  245.     B2X1 = B2X1 + 1
  246.     B2Y1 = B2Y1 + 1
  247.     B2X2 = B2X2 - 1
  248.     B2Y2 = B2Y2 - 1
  249.  
  250.     B3X1 = B3X1 + 1
  251.     B3Y1 = B3Y1 + 1
  252.     B3X2 = B3X2 - 1
  253.     B3Y2 = B3Y2 - 1
  254.  
  255.     B4X1 = B4X1 + 1
  256.     B4Y1 = B4Y1 + 1
  257.     B4X2 = B4X2 - 1
  258.     B4Y2 = B4Y2 - 1
  259.  
  260.     Colr = 1
  261.  
  262.     '*************************************************************************
  263.     '* SHOW THE CLIPPING
  264.     '*************************************************************************
  265.     FOR I = 0 TO GETMAXX \ 6
  266.         FOR J = 1 TO 4
  267.             SELECT CASE J
  268.                 CASE IS = 1
  269.                     SETVIEW B1X1, B1Y1, B1X2, B1Y2
  270.                     FOR K = 0 TO 4
  271.                         X = B1X1 + RND * XINC - XSUB
  272.                         Y = B1Y1 + RND * XINC - XSUB
  273.                         DRWPOINT 1, Colr, X, Y
  274.                         Colr = Colr + 1
  275.                         IF Colr > 15 THEN
  276.                             Colr = 1
  277.                         END IF
  278.                     NEXT K
  279.                 CASE IS = 2
  280.                     SETVIEW B2X1, B2Y1, B2X2, B2Y2
  281.                     X1 = B2X1 + RND * XINC - XSUB
  282.                     Y1 = B2Y1 + RND * XINC - XSUB
  283.                     X2 = B2X1 + RND * XINC - XSUB
  284.                     Y2 = B2Y1 + RND * XINC - XSUB
  285.                     DRWLINE 1, Colr, X1, Y1, X2, Y2
  286.                     Colr = Colr + 1
  287.                     IF Colr > 15 THEN
  288.                         Colr = 1
  289.                     END IF
  290.                 CASE IS = 3
  291.                     SETVIEW B3X1, B3Y1, B3X2, B3Y2
  292.                     X = B3X1 + RND * XINC - XSUB
  293.                     Y = B3Y1 + RND * XINC - XSUB
  294.                     RAD = RND * WDTH \ 2
  295.                     DRWCIRCLE 1, Colr, X, Y, RAD
  296.                     Colr = Colr + 1
  297.                     IF Colr > 15 THEN
  298.                         Colr = 1
  299.                     END IF
  300.                 CASE IS = 4
  301.                     SETVIEW B4X1, B4Y1, B4X2, B4Y2
  302.                     X = B4X1 + RND * XINC - XSUB
  303.                     Y = B4Y1 + RND * XINC - XSUB
  304.                     RADX = RND * WDTH \ 2
  305.                     RADY = RND * WDTH \ 2
  306.                     DRWELLIPSE 1, Colr, X, Y, RADX, RADY
  307.                     Colr = Colr + 1
  308.                     IF Colr > 15 THEN
  309.                         Colr = 1
  310.                     END IF
  311.             END SELECT
  312.         NEXT J
  313.     NEXT I
  314.     SETVIEW 0, 0, GETMAXX, GETMAXY
  315.     GETKEY RET$
  316.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  317.         EXIT SUB
  318.     END IF
  319.  
  320.     END SUB
  321.  
  322.     SUB DOFILL (RET$)
  323.  
  324.     '*************************************************************************
  325.     '* SET UP THE TITLE
  326.     '*************************************************************************
  327.     TITLE$ = "DEMO 3: Filling functions"
  328.     PALSET Pal, 0, 255
  329.  
  330.     '*************************************************************************
  331.     '* SHOW SCREEN FILL
  332.     '*************************************************************************
  333.     FILLSCREEN (10)
  334.     SETVIEW 0, 0, GETMAXX, GETMAXY
  335.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  336.     A$ = "FILLSCREEN (Color)"
  337.     DRWSTRING 1, 7, 0, A$, 10, 16
  338.     GETKEY RET$
  339.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  340.         SETVIEW 0, 0, GETMAXX, GETMAXY
  341.         EXIT SUB
  342.     END IF
  343.  
  344.     '*************************************************************************
  345.     '* SET UP WINDOWS AND SHOW VIEWPORT FILL
  346.     '*************************************************************************
  347.     FILLSCREEN (0)
  348.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  349.     A$ = "FILLVIEW (Color)"
  350.     DRWSTRING 1, 7, 0, A$, 10, 16
  351.  
  352.     WDTH = (GETMAXX + 1) / 2.25
  353.     SPCINGX = ((GETMAXX + 1) - WDTH * 2) / 3
  354.     HGTH = (GETMAXY + 1 - 35) / 2.25
  355.     SPCINGY = ((GETMAXY + 1 - 35) - HGTH * 2) / 3
  356.     XINC = WDTH * 1.5
  357.     YINC = HGTH * 1.5
  358.     XSUB = WDTH * .25
  359.     YSUB = HGTH * .25
  360.  
  361.     B1X1 = SPCINGX
  362.     B1X2 = B1X1 + WDTH
  363.     B1Y1 = SPCINGY + 35
  364.     B1Y2 = B1Y1 + HGTH
  365.  
  366.     B2X2 = GETMAXX - SPCINGX
  367.     B2X1 = B2X2 - WDTH
  368.     B2Y1 = SPCINGY + 35
  369.     B2Y2 = B2Y1 + HGTH
  370.  
  371.     B3X2 = GETMAXX - SPCINGX
  372.     B3X1 = B3X2 - WDTH
  373.     B3Y2 = GETMAXY - SPCINGY
  374.     B3Y1 = B3Y2 - HGTH
  375.  
  376.     B4X1 = SPCINGX
  377.     B4X2 = B4X1 + WDTH
  378.     B4Y2 = GETMAXY - SPCINGY
  379.     B4Y1 = B4Y2 - HGTH
  380.  
  381.     DRWBOX 1, 15, B1X1, B1Y1, B1X2, B1Y2
  382.     DRWBOX 1, 15, B2X1, B2Y1, B2X2, B2Y2
  383.     DRWBOX 1, 15, B3X1, B3Y1, B3X2, B3Y2
  384.     DRWBOX 1, 15, B4X1, B4Y1, B4X2, B4Y2
  385.  
  386.     B1X1 = B1X1 + 1
  387.     B1Y1 = B1Y1 + 1
  388.     B1X2 = B1X2 - 1
  389.     B1Y2 = B1Y2 - 1
  390.  
  391.     B2X1 = B2X1 + 1
  392.     B2Y1 = B2Y1 + 1
  393.     B2X2 = B2X2 - 1
  394.     B2Y2 = B2Y2 - 1
  395.  
  396.     B3X1 = B3X1 + 1
  397.     B3Y1 = B3Y1 + 1
  398.     B3X2 = B3X2 - 1
  399.     B3Y2 = B3Y2 - 1
  400.  
  401.     B4X1 = B4X1 + 1
  402.     B4Y1 = B4Y1 + 1
  403.     B4X2 = B4X2 - 1
  404.     B4Y2 = B4Y2 - 1
  405.  
  406.     GETKEY RET$
  407.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  408.         SETVIEW 0, 0, GETMAXX, GETMAXY
  409.         EXIT SUB
  410.     END IF
  411.  
  412.     SETVIEW B1X1, B1Y1, B1X2, B1Y2
  413.     FILLVIEW (10)
  414.     SETVIEW B2X1, B2Y1, B2X2, B2Y2
  415.     FILLVIEW (12)
  416.     SETVIEW B3X1, B3Y1, B3X2, B3Y2
  417.     FILLVIEW (13)
  418.     SETVIEW B4X1, B4Y1, B4X2, B4Y2
  419.     FILLVIEW (14)
  420.  
  421.     SETVIEW 0, 0, GETMAXX, GETMAXY
  422.     GETKEY RET$
  423.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  424.         SETVIEW 0, 0, GETMAXX, GETMAXY
  425.         EXIT SUB
  426.     END IF
  427.  
  428.     '*************************************************************************
  429.     '* SET UP WINDOW AND SHOW AREA FILL
  430.     '*************************************************************************
  431.     FILLSCREEN (0)
  432.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  433.     A$ = "FILLAREA (Xseed,Yseed,BrdrCol,FilCol)"
  434.     DRWSTRING 1, 7, 0, A$, 10, 16
  435.  
  436.     DRWBOX 1, 15, 5, 35, GETMAXX - 4, GETMAXY - 4
  437.     SETVIEW 6, 36, GETMAXX - 5, GETMAXY - 5
  438.  
  439.     Colr = 1
  440.     FOR I = 0 TO GETMAXX \ 10
  441.         X = 50 + RND * (GETMAXX - 50)
  442.         Y = 50 + RND * (GETMAXY - 50)
  443.         RADX = 2 + RND * GETMAXX \ 20
  444.         RADY = 2 + RND * GETMAXX \ 20
  445.         DRWELLIPSE 1, Colr, X, Y, RADX, RADY
  446.         Colr = Colr + 1
  447.         IF Colr > 9 THEN
  448.             Colr = 1
  449.         END IF
  450.     NEXT I
  451.  
  452.     FOR I = 0 TO GETMAXX \ 15
  453.         X = 50 + RND * (GETMAXX - 50)
  454.         Y = 50 + RND * (GETMAXY - 50)
  455.         RADX = 2 + RND * GETMAXX \ 20
  456.         RADY = 2 + RND * GETMAXX \ 20
  457.         DRWELLIPSE 1, 12, X, Y, RADX, RADY
  458.     NEXT I
  459.  
  460.     GETKEY RET$
  461.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  462.         SETVIEW 0, 0, GETMAXX, GETMAXY
  463.         EXIT SUB
  464.     END IF
  465.     
  466.     FILLAREA 7, 37, 12, 10
  467.  
  468.     GETKEY RET$
  469.     SETVIEW 0, 0, GETMAXX, GETMAXY
  470.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  471.         EXIT SUB
  472.     END IF
  473.  
  474.     '*************************************************************************
  475.     '* SET UP WINDOW AND SHOW COLOR FILL
  476.     '*************************************************************************
  477.     FILLSCREEN (0)
  478.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  479.     A$ = "FILLCOLOR (Xseed,Yseed,OldCol,FilCol)"
  480.     DRWSTRING 1, 7, 0, A$, 10, 16
  481.  
  482.     DRWBOX 1, 15, 5, 35, GETMAXX - 4, GETMAXY - 4
  483.     SETVIEW 6, 36, GETMAXX - 5, GETMAXY - 5
  484.  
  485.     Colr = 1
  486.     FOR I = 0 TO GETMAXX \ 10
  487.         X = 50 + RND * (GETMAXX - 50)
  488.         Y = 50 + RND * (GETMAXY - 50)
  489.         RADX = 2 + RND * GETMAXX \ 20
  490.         RADY = 2 + RND * GETMAXX \ 20
  491.         DRWELLIPSE 1, Colr, X, Y, RADX, RADY
  492.         Colr = Colr + 1
  493.         IF Colr > 9 THEN
  494.             Colr = 1
  495.         END IF
  496.     NEXT I
  497.  
  498.     FOR I = 0 TO GETMAXX \ 15
  499.         X = 50 + RND * (GETMAXX - 50)
  500.         Y = 50 + RND * (GETMAXY - 50)
  501.         RADX = 2 + RND * GETMAXX \ 20
  502.         RADY = 2 + RND * GETMAXX \ 20
  503.         DRWELLIPSE 1, 12, X, Y, RADX, RADY
  504.     NEXT I
  505.  
  506.     GETKEY RET$
  507.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  508.         SETVIEW 0, 0, GETMAXX, GETMAXY
  509.         EXIT SUB
  510.     END IF
  511.      
  512.     FILLCOLOR 7, 37, 0, 10
  513.  
  514.     SETVIEW 0, 0, GETMAXX, GETMAXY
  515.     GETKEY RET$
  516.  
  517.     END SUB
  518.  
  519.     SUB DOPAL (RET$)
  520.  
  521.     '*************************************************************************
  522.     '* SET UP THE TITLE
  523.     '*************************************************************************
  524.     TITLE$ = "DEMO 4: Palette functions"
  525.     PALSET ORGPAL, 0, 255
  526.  
  527.     '*************************************************************************
  528.     '* SHOW PALETTE SET/GET
  529.     '*************************************************************************
  530.     FILLSCREEN (0)
  531.     SETVIEW 0, 0, GETMAXX, GETMAXY
  532.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  533.     A$ = "PALGET (Palette$,FirstColr,LastColr) PALSET (Palette$,FirtColr,LastColr)"
  534.     DRWSTRING 1, 7, 0, A$, 10, 16
  535.     Colr = 16
  536.     X1 = 10
  537.     X2 = GETMAXX - 9
  538.     Y1 = 35
  539.     Y2 = GETMAXY - 9
  540.     I = 0
  541.     WHILE Y1 + I < Y2 - I
  542.         DRWBOX 1, Colr, X1 + I, Y1 + I, X2 - I, Y2 - I
  543.         Colr = Colr + 1
  544.         IF Colr > 255 THEN
  545.             Colr = 16
  546.         END IF
  547.         I = I + 1
  548.     WEND
  549.     GETKEY RET$
  550.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  551.         FILLSCREEN (0)
  552.         PALSET Pal, 16, 255
  553.         SETVIEW 0, 0, GETMAXX, GETMAXY
  554.         EXIT SUB
  555.     END IF
  556.     PALSET Pal, 16, 255
  557.  
  558.     '*************************************************************************
  559.     '* SHOW PALETTE AUTO FADE OUT/IN
  560.     '*************************************************************************
  561.     A$ = "PALIOAUTO (Palette$,FirstColr,LastColr,Speed)                           "
  562.     DRWSTRING 1, 7, 0, A$, 10, 16
  563.     GETKEY RET$
  564.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  565.         SETVIEW 0, 0, GETMAXX, GETMAXY
  566.         EXIT SUB
  567.     END IF
  568.     PALIOAUTO Pal, 16, 255, -2
  569.     PALIOAUTO Pal, 16, 255, 2
  570.  
  571.     '*************************************************************************
  572.     '* SHOW PALETTE AUTO FADE TO
  573.     '*************************************************************************
  574.     A$ = "PALCHGAUTO (Palette$,NewPalette$,FirstColr,LastColr,Speed)"
  575.     DRWSTRING 1, 7, 0, A$, 10, 16
  576.     GETKEY RET$
  577.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  578.         SETVIEW 0, 0, GETMAXX, GETMAXY
  579.         EXIT SUB
  580.     END IF
  581.     PALCHGAUTO Pal, PAL2, 16, 255, 2
  582.     PALCHGAUTO PAL2, Pal, 16, 255, 2
  583.  
  584.     '*************************************************************************
  585.     '* SHOW PALETTE ROTATE
  586.     '*************************************************************************
  587.     A$ = "PALROTATE (Palette$,FirstColr,LastColr,Shift)             "
  588.     DRWSTRING 1, 7, 0, A$, 10, 16
  589.     GETKEY RET$
  590.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  591.         SETVIEW 0, 0, GETMAXX, GETMAXY
  592.         EXIT SUB
  593.     END IF
  594.     FOR I = 0 TO 240
  595.         PALROTATE Pal, 16, 255, 2
  596.         PALGET Pal, 16, 255
  597.     NEXT I
  598.     FOR I = 0 TO 120
  599.         PALROTATE Pal, 16, 255, -8
  600.         PALGET Pal, 16, 255
  601.     NEXT I
  602.     GETKEY RET$
  603.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  604.         SETVIEW 0, 0, GETMAXX, GETMAXY
  605.         EXIT SUB
  606.     END IF
  607.  
  608.     END SUB
  609.  
  610.     SUB DOPRIMS (RET$)
  611.  
  612.     '*************************************************************************
  613.     '* SET UP THE TITLE
  614.     '*************************************************************************
  615.     TITLE$ = "DEMO 1: Primitives"
  616.     PALSET Pal, 0, 255
  617.      
  618.     '*************************************************************************
  619.     '* DRAW SOME POINTS
  620.     '*************************************************************************
  621.     FILLSCREEN (0)
  622.     SETVIEW 0, 0, GETMAXX, GETMAXY
  623.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  624.     A$ = "DRWPOINT (Mode,Color,X1,Y1,X2,Y2)"
  625.     DRWSTRING 1, 7, 0, A$, 10, 18
  626.     SETVIEW 0, 32, GETMAXX, GETMAXY
  627.     Colr = 1
  628.     NUMOF = GETMAXX * 2
  629.     FOR A = 0 TO NUMOF
  630.         X1 = RND * GETMAXX
  631.         Y1 = RND * GETMAXY
  632.         DRWPOINT 1, Colr, X1, Y1
  633.         Colr = Colr + 1
  634.         IF Colr > 15 THEN
  635.             Colr = 1
  636.         END IF
  637.     NEXT A
  638.     GETKEY RET$
  639.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  640.         SETVIEW 0, 0, GETMAXX, GETMAXY
  641.         EXIT SUB
  642.     END IF
  643.  
  644.     '*************************************************************************
  645.     '* DRAW SOME LINES
  646.     '*************************************************************************
  647.     SETVIEW 0, 0, GETMAXX, GETMAXY
  648.     FILLSCREEN (0)
  649.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  650.     A$ = "DRWLINE (Mode,Color,X1,Y1,X2,Y2)"
  651.     DRWSTRING 1, 7, 0, A$, 10, 18
  652.     SETVIEW 0, 32, GETMAXX, GETMAXY
  653.     NUMOF = GETMAXX \ 6
  654.     FOR A = 0 TO NUMOF
  655.         X1 = RND * GETMAXX
  656.         Y1 = RND * GETMAXY
  657.         X2 = RND * GETMAXX
  658.         Y2 = RND * GETMAXY
  659.         DRWLINE 1, Colr, X1, Y1, X2, Y2
  660.         Colr = Colr + 1
  661.         IF Colr > 15 THEN
  662.             Colr = 1
  663.         END IF
  664.     NEXT A
  665.     GETKEY RET$
  666.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  667.         SETVIEW 0, 0, GETMAXX, GETMAXY
  668.         EXIT SUB
  669.     END IF
  670.  
  671.     '*************************************************************************
  672.     '* DRAW SOME BOXES
  673.     '*************************************************************************
  674.     SETVIEW 0, 0, GETMAXX, GETMAXY
  675.     FILLSCREEN (0)
  676.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  677.     A$ = "DRWBOX (Mode,Color,X1,Y1,X2,Y2)"
  678.     DRWSTRING 1, 7, 0, A$, 10, 18
  679.     SETVIEW 0, 32, GETMAXX, GETMAXY
  680.     NUMOF = GETMAXX \ 10
  681.     FOR A = 0 TO NUMOF
  682.         X1 = RND * GETMAXX
  683.         Y1 = RND * GETMAXY
  684.         X2 = RND * GETMAXX
  685.         Y2 = RND * GETMAXY
  686.         DRWBOX 1, Colr, X1, Y1, X2, Y2
  687.         Colr = Colr + 1
  688.         IF Colr > 15 THEN
  689.             Colr = 1
  690.         END IF
  691.     NEXT A
  692.     GETKEY RET$
  693.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  694.         SETVIEW 0, 0, GETMAXX, GETMAXY
  695.         EXIT SUB
  696.     END IF
  697.  
  698.     '*************************************************************************
  699.     '* DRAW SOME CIRCLES
  700.     '*************************************************************************
  701.     SETVIEW 0, 0, GETMAXX, GETMAXY
  702.     FILLSCREEN (0)
  703.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  704.     A$ = "DRWCIRCLE (Mode,Color,Cx,Cy,Radius)"
  705.     DRWSTRING 1, 7, 0, A$, 10, 18
  706.     SETVIEW 0, 32, GETMAXX, GETMAXY
  707.     NUMOF = GETMAXX \ 20
  708.     MAXRAD = GETMAXX \ 2
  709.     FOR A = 0 TO NUMOF
  710.         X = RND * GETMAXX
  711.         Y = RND * GETMAXY
  712.         RAD = RND * MAXRAD
  713.         DRWCIRCLE 1, Colr, X, Y, RAD
  714.         Colr = Colr + 1
  715.         IF Colr > 15 THEN
  716.             Colr = 1
  717.         END IF
  718.     NEXT A
  719.     GETKEY RET$
  720.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  721.         SETVIEW 0, 0, GETMAXX, GETMAXY
  722.         EXIT SUB
  723.     END IF
  724.  
  725.     '*************************************************************************
  726.     '* DRAW SOME ELLIPSES
  727.     '*************************************************************************
  728.     SETVIEW 0, 0, GETMAXX, GETMAXY
  729.     FILLSCREEN (0)
  730.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  731.     A$ = "DRWELLIPSE (Mode,Color,Cx,Cy,RadiusX,RadiusY)"
  732.     DRWSTRING 1, 7, 0, A$, 10, 18
  733.     SETVIEW 0, 32, GETMAXX, GETMAXY
  734.     NUMOF = GETMAXX \ 20
  735.     MAXRAD = GETMAXX \ 2
  736.     FOR A = 0 TO NUMOF
  737.         X = RND * GETMAXX
  738.         Y = RND * GETMAXY + 35
  739.         RADX = RND * MAXRAD
  740.         RADY = RND * MAXRAD
  741.         DRWELLIPSE 1, Colr, X, Y, RADX, RADY
  742.         Colr = Colr + 1
  743.         IF Colr > 15 THEN
  744.             Colr = 1
  745.         END IF
  746.     NEXT A
  747.     SETVIEW 0, 0, GETMAXX, GETMAXY
  748.     GETKEY RET$
  749.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  750.         EXIT SUB
  751.     END IF
  752.  
  753.     END SUB
  754.  
  755.     SUB DOSCROLL (RET$)
  756.  
  757.  
  758.     '*************************************************************************
  759.     '* SET UP THE TITLE
  760.     '*************************************************************************
  761.     TITLE$ = "DEMO 7: Scroll functions"
  762.     PALSET Pal, 0, 255
  763.     FILLSCREEN (0)
  764.     SETVIEW 0, 0, GETMAXX, GETMAXY
  765.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  766.  
  767.     SPCNG = (GETMAXY - 32) \ 5
  768.     SKIP = (INT((GETMAXX + 1) / 160 + .9) * 2) - 1
  769.     Num = SPCNG / 2 / SKIP
  770.     IF SPCNG / 2 <> INT(SPCNG / 2) THEN
  771.         SPCNG = SPCNG + 1
  772.     END IF
  773.     X1 = ((GETMAXX + 1) \ 2) - SPCNG
  774.     Y1 = (((GETMAXY + 1 - 32) \ 2) + 32) - SPCNG
  775.     X2 = ((GETMAXX + 1) \ 2) + SPCNG
  776.     Y2 = (((GETMAXY + 1 - 32) \ 2) + 32) + SPCNG
  777.  
  778.     DRWBOX 1, 12, X1, Y1, X2, Y2
  779.     X1 = X1 + 1
  780.     Y1 = Y1 + 1
  781.     X2 = X2 - 1
  782.     Y2 = Y2 - 1
  783.     Colr = 16
  784.     TEXT$ = "TEXT text TEXT"
  785.  
  786.     '*************************************************************************
  787.     '* SHOW SCROLLUP
  788.     '*************************************************************************
  789.     SETVIEW 0, 0, GETMAXX, GETMAXY
  790.     A$ = "SCROLLUP (X1,Y1,X2,Y2,NumLines,FillColr)"
  791.     DRWSTRING 1, 7, 0, A$, 10, 16
  792.     SETVIEW X1, Y1, X2, Y2
  793.     FILLVIEW (0)
  794.     NUMOF = GETMAXX \ 10
  795.     FOR A = 0 TO NUMOF
  796.         X = RND * GETMAXX
  797.         Y = RND * GETMAXY
  798.         I = RND * GETMAXX
  799.         J = RND * GETMAXY
  800.         DRWLINE 1, Colr, X, Y, I, J
  801.         Colr = Colr + 3
  802.         IF Colr > 255 THEN
  803.             Colr = 16
  804.         END IF
  805.     NEXT A
  806.     DRWSTRING 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  807.     DRWSTRINGLT 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  808.     DRWSTRINGDN 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  809.     DRWSTRINGRT 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  810.     GETKEY RET$
  811.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  812.         SETVIEW 0, 0, GETMAXX, GETMAXY
  813.         EXIT SUB
  814.     END IF
  815.     FOR A = 0 TO Num
  816.         SCROLLUP X1, Y1, X2, Y2, SKIP, 0   '* HERE IT IS!
  817.     NEXT A
  818.  
  819.     '*************************************************************************
  820.     '* SHOW SCROLLLT
  821.     '*************************************************************************
  822.     SETVIEW 0, 0, GETMAXX, GETMAXY
  823.     A$ = "SCROLLLT (X1,Y1,X2,Y2,NumLines,FillColr)"
  824.     DRWSTRING 1, 7, 0, A$, 10, 16
  825.     SETVIEW X1, Y1, X2, Y2
  826.     FILLVIEW (0)
  827.     NUMOF = GETMAXX \ 10
  828.     FOR A = 0 TO NUMOF
  829.         X = RND * GETMAXX
  830.         Y = RND * GETMAXY
  831.         I = RND * GETMAXX
  832.         J = RND * GETMAXY
  833.         DRWLINE 1, Colr, X, Y, I, J
  834.         Colr = Colr + 3
  835.         IF Colr > 255 THEN
  836.             Colr = 16
  837.         END IF
  838.     NEXT A
  839.     DRWSTRING 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  840.     DRWSTRINGLT 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  841.     DRWSTRINGDN 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  842.     DRWSTRINGRT 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  843.     GETKEY RET$
  844.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  845.         SETVIEW 0, 0, GETMAXX, GETMAXY
  846.         EXIT SUB
  847.     END IF
  848.     FOR A = 0 TO Num
  849.         SCROLLLT X1, Y1, X2, Y2, SKIP, 0   '* HERE IT IS!
  850.     NEXT A
  851.  
  852.     '*************************************************************************
  853.     '* SHOW SCROLLDN
  854.     '*************************************************************************
  855.     SETVIEW 0, 0, GETMAXX, GETMAXY
  856.     A$ = "SCROLLDN (X1,Y1,X2,Y2,NumLines,FillColr)"
  857.     DRWSTRING 1, 7, 0, A$, 10, 16
  858.     SETVIEW X1, Y1, X2, Y2
  859.     FILLVIEW (0)
  860.     NUMOF = GETMAXX \ 10
  861.     FOR A = 0 TO NUMOF
  862.         X = RND * GETMAXX
  863.         Y = RND * GETMAXY
  864.         I = RND * GETMAXX
  865.         J = RND * GETMAXY
  866.         DRWLINE 1, Colr, X, Y, I, J
  867.         Colr = Colr + 3
  868.         IF Colr > 255 THEN
  869.             Colr = 16
  870.         END IF
  871.     NEXT A
  872.     DRWSTRING 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  873.     DRWSTRINGLT 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  874.     DRWSTRINGDN 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  875.     DRWSTRINGRT 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  876.     GETKEY RET$
  877.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  878.         SETVIEW 0, 0, GETMAXX, GETMAXY
  879.         EXIT SUB
  880.     END IF
  881.     TIM! = TIMER
  882.     FOR A = 0 TO Num
  883.         SCROLLDN X1, Y1, X2, Y2, SKIP, 0   '* HERE IT IS!
  884.     NEXT A
  885.     TIM3! = TIMER - TIM!
  886.  
  887.     '*************************************************************************
  888.     '* SHOW SCROLLRT
  889.     '*************************************************************************
  890.     SETVIEW 0, 0, GETMAXX, GETMAXY
  891.     A$ = "SCROLLRT (X1,Y1,X2,Y2,NumLines,FillColr)"
  892.     DRWSTRING 1, 7, 0, A$, 10, 16
  893.     SETVIEW X1, Y1, X2, Y2
  894.     FILLVIEW (0)
  895.     NUMOF = GETMAXX \ 10
  896.     FOR A = 0 TO NUMOF
  897.         X = RND * GETMAXX
  898.         Y = RND * GETMAXY
  899.         I = RND * GETMAXX
  900.         J = RND * GETMAXY
  901.         DRWLINE 1, Colr, X, Y, I, J
  902.         Colr = Colr + 3
  903.         IF Colr > 255 THEN
  904.             Colr = 16
  905.         END IF
  906.     NEXT A
  907.     DRWSTRING 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  908.     DRWSTRINGLT 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  909.     DRWSTRINGDN 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  910.     DRWSTRINGRT 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  911.     GETKEY RET$
  912.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  913.         SETVIEW 0, 0, GETMAXX, GETMAXY
  914.         EXIT SUB
  915.     END IF
  916.     FOR A = 0 TO Num
  917.         SCROLLRT X1, Y1, X2, Y2, SKIP, 0   '* HERE IT IS!
  918.     NEXT A
  919.  
  920.     GETKEY RET$
  921.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  922.         SETVIEW 0, 0, GETMAXX, GETMAXY
  923.         EXIT SUB
  924.     END IF
  925.  
  926.     END SUB
  927.  
  928.     SUB DOTEXT (RET$)
  929.  
  930.     '*************************************************************************
  931.     '* SET UP THE TITLE
  932.     '*************************************************************************
  933.     TITLE$ = "DEMO 6: Text functions"
  934.     PALSET Pal, 0, 255
  935.  
  936.     '*************************************************************************
  937.     '* SHOW ALTERNATE PRINT DIRECTIONS
  938.     '*************************************************************************
  939.  
  940.     FILLSCREEN (0)
  941.     SETVIEW 0, 0, GETMAXX, GETMAXY
  942.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  943.     A$ = "DRWSTRING(Mode,ForeGndColr,BackGndColr,Text$,X,Y)"
  944.     DRWSTRING 1, 7, 0, A$, 10, 16
  945.     SETVIEW 0, 32, GETMAXX, GETMAXY
  946.     A$ = "The Quick Brown Fox Jumped Over The Lazy Dog's Back! 0123456789"
  947.     Colr = 16
  948.     FOR Y = 32 TO GETMAXY STEP 20
  949.         DRWSTRING 1, Colr, 0, A$, 0, Y
  950.         Colr = Colr + 5
  951.         IF Colr > 255 THEN
  952.             Colr = 16
  953.         END IF
  954.     NEXT Y
  955.     GETKEY RET$
  956.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  957.         SETVIEW 0, 0, GETMAXX, GETMAXY
  958.         FILLSCREEN (0)
  959.         EXIT SUB
  960.     END IF
  961.  
  962.     FILLVIEW (0)
  963.     SETVIEW 0, 0, GETMAXX, GETMAXY
  964.     A$ = "DRWSTRINGLT(Mode,ForeGndColr,BackGndColr,Text$,X,Y)"
  965.     DRWSTRING 1, 7, 0, A$, 10, 16
  966.     SETVIEW 0, 32, GETMAXX, GETMAXY
  967.     A$ = "The Quick Brown Fox Jumped Over The Lazy Dog's Back! 0123456789"
  968.     FOR X = 0 TO GETMAXX STEP 20
  969.         DRWSTRINGLT 1, Colr, 0, A$, X, GETMAXY
  970.         Colr = Colr + 5
  971.         IF Colr > 255 THEN
  972.             Colr = 16
  973.         END IF
  974.     NEXT X
  975.     GETKEY RET$
  976.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  977.         SETVIEW 0, 0, GETMAXX, GETMAXY
  978.         FILLSCREEN (0)
  979.         EXIT SUB
  980.     END IF
  981.  
  982.     FILLVIEW (0)
  983.     SETVIEW 0, 0, GETMAXX, GETMAXY
  984.     A$ = "DRWSTRINGDN(Mode,ForeGndColr,BackGndColr,Text$,X,Y)"
  985.     DRWSTRING 1, 7, 0, A$, 10, 16
  986.     SETVIEW 0, 32, GETMAXX, GETMAXY
  987.     A$ = "The Quick Brown Fox Jumped Over The Lazy Dog's Back! 0123456789"
  988.     Colr = 16
  989.     FOR Y = GETMAXY TO 32 STEP -20
  990.         DRWSTRINGDN 1, Colr, 0, A$, GETMAXX, Y
  991.         Colr = Colr + 5
  992.         IF Colr > 255 THEN
  993.             Colr = 16
  994.         END IF
  995.     NEXT Y
  996.     GETKEY RET$
  997.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  998.         SETVIEW 0, 0, GETMAXX, GETMAXY
  999.         FILLSCREEN (0)
  1000.         EXIT SUB
  1001.     END IF
  1002.  
  1003.     FILLVIEW (0)
  1004.     SETVIEW 0, 0, GETMAXX, GETMAXY
  1005.     A$ = "DRWSTRINGRT(Mode,ForeGndColr,BackGndColr,Text$,X,Y)"
  1006.     DRWSTRING 1, 7, 0, A$, 10, 16
  1007.     SETVIEW 0, 32, GETMAXX, GETMAXY
  1008.     A$ = "The Quick Brown Fox Jumped Over The Lazy Dog's Back! 0123456789"
  1009.     FOR X = GETMAXX TO 0 STEP -20
  1010.         DRWSTRINGRT 1, Colr, 0, A$, X, 32
  1011.         Colr = Colr + 5
  1012.         IF Colr > 255 THEN
  1013.             Colr = 16
  1014.         END IF
  1015.     NEXT X
  1016.     GETKEY RET$
  1017.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  1018.         SETVIEW 0, 0, GETMAXX, GETMAXY
  1019.         FILLSCREEN (0)
  1020.         EXIT SUB
  1021.     END IF
  1022.  
  1023.     END SUB
  1024.  
  1025.